package com.sname.demoribbon.command;

import com.netflix.hystrix.HystrixCommand;
import com.netflix.hystrix.HystrixCommandGroupKey;
import org.springframework.web.client.RestTemplate;

/**
 * Created By  醉美柳舞之众星捧月
 *
 * @author 宋贤坤
 * @date 2018/11/18 21:07
 */
public class HelloServiceCommand extends HystrixCommand<String> {

    private RestTemplate restTemplate;

    /**
     * 这个方法是继承后必须要有的
     */
    protected HelloServiceCommand(String commandGroupKey, RestTemplate restTemplate) {
        // 线程组什么东西的
        super(HystrixCommandGroupKey.Factory.asKey(commandGroupKey));
        this.restTemplate = restTemplate;
        //把从外面传入的赋值给上面,再注入的话可以全局使用不为空了;
    }

    /**
     * 所有的逻辑是在这个run方法里面执行的
     *
     * @return
     * @throws Exception
     */
    @Override
    protected String run() throws Exception {

        return restTemplate.getForEntity("http://DEMO-UPMS/hello", String.class).getBody();
    }

    /**
     * 覆写请求熔断服务降级的方法
     *
     * @return
     */
    @Override
    protected String getFallback() {
        return "Error:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::";
    }
}
